package uk.co.traintrackapp.traintrack.fragment; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v4.app.Fragment; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.Editable; import android.text.TextWatcher; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import java.util.ArrayList; import uk.co.traintrackapp.traintrack.R; import uk.co.traintrackapp.traintrack.TrainTrack; import uk.co.traintrackapp.traintrack.adapter.StationRowAdapter; import uk.co.traintrackapp.traintrack.model.Station; public class StationsSearchFragment extends Fragment { public static Fragment newInstance() { return new StationsSearchFragment(); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_stations_search, container, false); TrainTrack app = (TrainTrack) getActivity().getApplication(); ArrayList<Station> stations = app.getStations(); final RecyclerView list = (RecyclerView) v.findViewById(R.id.list); list.setLayoutManager(new LinearLayoutManager(getActivity())); list.setItemAnimator(new DefaultItemAnimator()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); String distanceUnit = prefs.getString("pref_distance_units", "km"); final StationRowAdapter adapter = new StationRowAdapter(stations, distanceUnit); list.setAdapter(adapter); final EditText search = (EditText) v.findViewById(R.id.search); search.requestFocus(); InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0); search.addTextChangedListener(new TextWatcher() { public void afterTextChanged(Editable arg0) { } public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } public void onTextChanged(CharSequence search, int arg1, int arg2, int arg3) { adapter.getFilter().filter(search); list.smoothScrollToPosition(0); } }); return v; } }